import { Message } from 'element-ui'
import cookie from 'js-cookie'

export default function({ $axios, redirect }) {
  $axios.onRequest((config) => {
    let userInfo = cookie.get('userInfo')
    if (userInfo) {
      // debugger
      userInfo = JSON.parse(userInfo)
      config.headers['token'] = userInfo.token
    }
    console.log('Making request to ' + config.url)
  })

  $axios.onRequestError((error) => {
    console.log('onRequestError', error) // for debug
  })

  $axios.onResponse((response) => {
    console.log('Reciving resposne', response)
    if (response.data.code === 0) {
      return response
    } else if (response.data.code === -211) {
      console.log('用户校验失败')
      // debugger
      cookie.set('userInfo', '')
      window.location.href = '/'
    } else {
      console.log('抛了异常跑去404');
      Message({
        message: response.data.message,
        type: 'error',
        duration: 5 * 1000
      })
      return Promise.reject(response)
    
      // console.warn('后端返回自定义异常', message || '未知错误');
      // 可以弹个提示，不跳error界面
      // 比如用你的 UI 框架的 Message 组件
      // Message({
      //   message: message || '操作失败，请稍后再试',
      //   type: 'error',
      //   duration: 5 * 1000,
      // });
  
      // 这里根据你的需求：
      // 1. 如果需要让调用处.catch捕捉到，可以继续reject
      // 2. 如果希望"异常但流程继续"，也可以return一个假的resolved Promise
  
    //  return Promise.reject(new Error(message || '操作失败'));
    }
  })

  //通信失败
  $axios.onResponseError((error) => {
    console.log('onResponseError', error) // for debug
  })
}
